#include <bits/stdc++.h>
using namespace std;
const int N = 10000 + 7;
int n, t, d[N];
bool check(int k) {
  int y = 0;    // 上一头牛的结束时间
  int ans = 0;  // 时间的和
  priority_queue<int, vector<int>, greater<int>> q;  // 保存结束时间
  for (int i = 0; i < k; ++i) {
    q.push(d[i]);  //注意：只有这里是时间(不是结束时间)
  }
  for (int i = k; i < n; ++i) {
    ans += q.top() - y;  // 这头牛的结束时间 - 上头牛的结束时间 = 多用的时间
    y = q.top();  // 这头牛的结束时间
    q.pop();
    q.push(d[i] + y);
    if (ans > t) return false;  // 超过时间
    q.push(t);
  }
  while (q.size()) {  // 检查最后的几位
    ans += q.top() - y;
    y = q.top();
    q.pop();
    if (ans > t) return false;
  }
  return true;
}
int main() {
  cin >> n >> t;
  for (int i = 0; i < n; ++i) cin >> d[i];
  int l = 0, r = N;
  while (l <= r) {
    int mid = (l + r) / 2;
    if (check(mid))
      r = mid - 1;
    else
      l = mid + 1;
  }
  cout << l << endl;
}
